// /import core
// /import uicore
// /import ui/menu.js
// /import ui/splitbutton.js
(function() {
	// todo: menu和item提成通用list
	var utils = baidu.editor.utils, uiUtils = baidu.editor.ui.uiUtils, Menu = baidu.editor.ui.Menu, SplitButton = baidu.editor.ui.SplitButton, Combox = baidu.editor.ui.Combox = function(
			options) {
		this.initOptions(options);
		this.initCombox();
	};
	Combox.prototype = {
		uiName : 'combox',
		initCombox : function() {
			var me = this;
			this.items = this.items || [];
			for (var i = 0; i < this.items.length; i++) {
				var item = this.items[i];
				item.uiName = 'listitem';
				item.index = i;
				item.onclick = function() {
					me.selectByIndex(this.index);
				};
			}
			this.popup = new Menu({
						items : this.items,
						uiName : 'list'
					});
			this.initSplitButton();
		},
		_SplitButton_postRender : SplitButton.prototype.postRender,
		postRender : function() {
			this._SplitButton_postRender();
			this.setLabel(this.label || '');
			this.setValue(this.initValue || '');
		},
		showPopup : function() {
			var rect = uiUtils.getClientRect(this.getDom());
			rect.top += 1;
			rect.bottom -= 1;
			rect.height -= 2;
			this.popup.showAnchorRect(rect);
		},
		getValue : function() {
			return this.value;
		},
		setValue : function(value) {
			var index = this.indexByValue(value);
			if (index != -1) {
				this.selectedIndex = index;
				this.setLabel(this.items[index].label);
				this.value = this.items[index].value;
			} else {
				this.selectedIndex = -1;
				this.setLabel(this.getLabelForUnknowValue(value));
				this.value = value;
			}
		},
		setLabel : function(label) {
			this.getDom('button_body').innerHTML = label;
			this.label = label;
		},
		getLabelForUnknowValue : function(value) {
			return value;
		},
		indexByValue : function(value) {
			for (var i = 0; i < this.items.length; i++) {
				if (value == this.items[i].value) {
					return i;
				}
			}
			return -1;
		},
		getItem : function(index) {
			return this.items[index];
		},
		selectByIndex : function(index) {
			if (index < this.items.length
					&& this.fireEvent('select', index) !== false) {
				this.selectedIndex = index;
				this.value = this.items[index].value;
				this.setLabel(this.items[index].label);
			}
		}
	};
	utils.inherits(Combox, SplitButton);
})();
